//the caprice storage engine
package caprice

type Store struct {
	dir string
}

func NewStore(path string) (*Store, error) {
	s := new(Store)

	return s, nil
}

//Caprice has such as data structure:
//	table -> item -> row
//i.e. one item has one or multiple rows
func (s *Store) Get(table, key string) (data []byte, e error) {
	return
}

//create a new table - a caprice table corresponds to a linux filesytem directory
func (s *Store) LogCreateTable(name string) (lsn int64, e error) {
	return
}

//remove the table
func (s *Store) LogDelTable(name string) (lsn int64, e error) {
	return
}

//insert a new item or overwrite an existing one
func (s *Store) LogPutItem(table, key string, data []byte) (lsn int64, e error) {
	return
}

//insert the item if and only if it is not in
func (s *Store) LogAddItem(table, key string, data []byte) (lsn int64, e error) {
	return
}

//remove an item
func (s *Store) LogDelItem(table, key string) (lsn int64, e error) {
	return
}

//make visible all the logged operations <= lsn
func (s *Store) MakeVisible(lsn int64) error {
	return nil
}

//truncate the commit log to lsn
func (s *Store) TruncateClog(lsn int64) error {
	return nil
}

//append content to the log
func (s *Store) ExtendClog(data []byte) error {
	return nil
}

//freeze a table
func (s *Store) Freeze(table string) error {
	return nil
}


